<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script>
  function formatDate(date, fmt) {
    // 1.获取年份
    // y yy yyyy +表示有一个或多个
    // * 0个或者多个
    // ? 0个或者1个
    if(/(y+)/.test(fmt)){
      // RegExp.$1就是匹配到的字符串
      // substr截取有几个
      fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
    }

    // 2.获取
    // M+ -> 正则表达式中的一个规则.
    //
    let o = {
      'M+': date.getMonth() + 1,
      'd+': date.getDate(),
      'h+': date.getHours(),
      'm+': date.getMinutes(),
      's+': date.getSeconds(),
    };
    // 为什么y和下面的不放到一起？
    // 下面
    for(let k in o){
      if(new RegExp(`(${k})`).test(fmt)){
        let str = o[k] + '';
        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
      }
    }
    return fmt;
  }

  // 截取00，有0补充无零截取
  function padLeftZero(str) {
    return ('00' + str).substr(str.length);
  }


  var myDate = new Date()
  var res = formatDate(myDate,'yyyy-M-dd-h')
  console.log(res)
</script>
</body>
</html>
